// 需要构建的文件
// fis.set('project.fileType.text', 'vue');
fis.set('project.ignore', fis.get('project.ignore').concat(['dist/**', 'DS_store', 'conf/**']));

// 关于babel和typescript: 替换`es6-babel`为`typescript`即可,但是会导致es6Modules引用报错，若用ts最好用commonJS

// 模块化支持插件
fis.hook('commonjs', {
  extList: [
    '.js', '.coffee', '.es6', '.jsx', '.vue',
  ],
});
fis.match('node_modules/**.js', {
  isMod: true,
  rExt: 'js'
});
// 编译vue组件
fis.match('**.vue', {
  isMod: true,
  rExt: 'js',
  parser: [
    fis.plugin('vue-component', {
      ccssScopedFlag: '__vuec__',
      extractCSS: true,
      styleNameJoin: '',
    }),
    fis.plugin('es6-babel', {
      // noImplicitUseStrict: true
      // options
    })
  ]
});
// 模块文件
fis.match('{**.vue:js,static/modules/**.js}', {
  isMod: true,
  rExt: 'js',
  useSameNameRequire: true,
  parser: [
    fis.plugin('es6-babel', {
      // noImplicitUseStrict: true
      // options
    })
  ]
});
// 非模块文件
fis.match('{/static/lib/**.js,/static/page/**.js}', {
  isMod: false,
  parser: [
    fis.plugin('es6-babel', {
      // noImplicitUseStrict: true
      // options
    })
  ]
});
fis.match('::package', {
  postpackager: fis.plugin('loader', {
  })
})

fis.match('{*.vue:less,*.less}', {
  rExt: 'css',
  parser: [fis.plugin('less')],
  preprocessor: fis.plugin('autoprefixer', {
    "browsers": ["Android >= 2.1", "iOS >= 4", "ie >= 8", "firefox >= 15"],
    "cascade": true
  })
});
fis.config.set('settings.optimizer.uglify-js', {
  mangle: {
    except: 'exports, module, require, define'
  },
  compress: {
    drop_console: true
  }
});
fis.unhook('components');
fis.hook('node_modules');
// 部署
fis.media('prod').match('**', {
    domain: 'http://192.168.0.105:3344/'
  })
  .match('{*.vue:less,*.less}', {
    optimizer: fis.plugin('clean-css'),
  }).match('**.png', {
    optimizer: fis.plugin('png-compressor')
  })
  .match('node_modules/**.js', {
    packTo: 'static/lib/third.js'
  }).match('::package', {
    postpackager: fis.plugin('loader', {
      allInOne: {
        js: function (file) {
          return "/static/page/" + file.filename + "_aio.js";
        },
        css: function (file) {
          return "/static/css/" + file.filename + "_aio.css";
        },
        ignore: '/node_modules/**.js'
      }
    })
  })
  .match('{static,node_modules}/**.js', {
    optimizer: fis.plugin('uglify-js'),
  })
  .match('**.vue:js', {
    optimizer: fis.plugin('uglify-js'),
  })
  .match('**{.js,.less,.css}', {
    // query: versionRandow
  });
fis.media('debug').match('*', {
  useHash: false,
  useSprite: false,
  optimizer: null,
  domain: ''
});